<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue-router/3.2.0/vue-router.min.js"></script>
</head>
<body>
    <!-- router -->
    <div id="app">
        <!-- 路由器跳转的其他方式 -->
        <div>
            <input type="button" value="跳转到首页" @click="fn1()">
            <input type="button" value="跳转到新闻页" @click="fn2()">
        </div>
        <!-- 路由需要一个出口 -->
        <!-- 然后才可以匹配到组件渲染出来 -->
        <router-view></router-view>
    </div>


    <script> 

        //创建路由
        const router = new VueRouter({
            //路由规则
            routes: [
                {
                    path:'/index/:id',
                    name:'index',//路由名称，他是一个可选的属性,定义后可以通过name这个属性来跳转
                    component:{ //路由所对应的组件
                        template:'<div>{{$route.params.id}}首页</div>'//组件模板
                    }
                },
                {
                    path:'/news/:id/',
                    component:{
                        template:'<div>新闻:{{$route.params.id}}</div>'
                    }
                }
            ]
        })
        //1.创建Vue对象和挂载根实例
        //一定要通过router配置参数注入路由，从而让整个应用都有路由的功能
        let vm = new Vue({
            el:"#app",
            data:{},
            //将路由router添加到Vue中
            router,
            methods: {
                fn1(){
                    // 可以根据路由的名称实现一个跳转
                    this.$router.replace({
                        name:'index',
                        params:{
                            id:Math.random()//这才是我们要传的参数
                        }
                    })
                },
                fn2(){
                    //我们可以直接跳转路由地址，参数可以直接写在路径中，大家可以使用ES6中的模板字符串 `模板字符串` 最常用的方式
                    this.$router.push(`/news/${Math.random()}`)
                }
            }, 
            
        })
    </script>
</body>
</html>